The present application generally relates computing analytics, and more specifically to identify patterns for use by computing analytics in order to identify patterns to consolidate the number of software applications in an enterprise environment or to migrate software applications to a hosted environment.
Hosted environments, as known as cloud computing, is becoming a most popular platform for hosting enterprise applications because the cloud platform consolidates the computing machines, greatly increases resource utilization, and facilitates management of machines, resources, and services. Many large enterprises and organizations are moving their applications into private cloud, where the service catalog, machine templates, cloud services operation workflows, and/or other cloud features can be tailored to the specific requirements of the applications.
However, consolidation of machines into physical resources alone is not sufficient for migrating the applications into cloud. For example, a large company or organization has typically hundreds or thousands of applications, and many of them have their own deployment topology and configuration of certain important middleware including database server, application server, and web server. Before the applications are moved into cloud these applications including the middleware are usually maintained by separate owner teams of the applications, and require a lot of maintenance people. But in cloud platforms, templates of machines and important middleware, e.g. service catalogs and prepared machine images, are used for provisioning of machines, middleware and applications. So there is a need to consolidate, or standardize, the large number of applications' deployment topology and configuration into a small number of templates, so that the templates can be placed in the service catalog of the cloud platforms. The standardization of application deployment and configuration allows the cloud provider or cloud administrators to manage large number of existing applications and provision new applications through cloud services and operations (e.g. services of provisioning, security, conformance, auto-scaling, monitoring, and disaster recovery).
Currently this standardization task is done manually by collaboration of application owners and the cloud provider. It requires experts of the cloud and the application owners to sit together and discuss what templates of deployments and configurations should be used. This manual procedure is very time-consuming, labor-intensive, and error-prone.
Further, cloud systems support to provisioning and management of enterprise applications can be provided in infrastructure level (Infrastructure-as-a-Service, IaaS) or software level (Software-as-a-Service, SaaS). In an IaaS cloud, the installation, deployment and configuration of the application software components, such as web server, application server, database, are users' responsibility, and the cloud only provides services of provisioning virtual machines or containers.
In a private cloud which is dedicatedly designed and implemented for a large enterprise or organization, IaaS is not sufficient and the SaaS capability of provisioning and managing software instances of enterprise applications is highly preferred (our experience with customers shows that “automating the last mile” is a typical requirement for a private cloud).
The cloud service catalog in such a private cloud usually comprises a number of templates for certain software and/or software combinations besides a number of templates for virtual machines. Different templates can involve different software or software combinations, or involve the same software with different configurations.
Using IBM DB2 server as an example: the cloud service catalog designer can offer 4 predefined DB2 configurations—platinum, gold, silver and bronze. The DB2 server has hundreds of configuration parameters. The four catalog entries will correspond to DB2 server configurations with four sets of configuration parameter settings. When an enterprise has hundreds of applications using the DB2 server, it is not convenient for the cloud managers to provide and manage hundreds of DB2 server templates in the cloud catalog; instead, it is much more preferred to identify 4 (or slightly more) DB2 configurations and provide the small number of DB2 server templates for the hundreds of applications.
In the current best practice of private cloud implementation this is usually done manually by experts. The manual approach is very costly and takes very long time as migrating enterprise applications into a private cloud for a large enterprise usually involves many such tasks of identifying common software combinations and software configurations. Automating the pattern identification will greatly facilitate the setup of private cloud platforms for large enterprises.